<html lang="zh-CN">
 <head> 
  <meta charset="UTF-8"> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
  <title>选择入口</title> 
  <link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;700&amp;display=swap" rel="stylesheet"> 
  <style>
    :root {
--neon-purple: #8a2be2;
--neon-cyan: #d8bfd8;
--cosmic-bg: linear-gradient(135deg, #1a0637 0%, #2d0b4d 100%);
--card-bg: rgba(50, 15, 80, 0.6);
--text-glow: 0 0 8px currentColor;
}
 
body {
    font-family: 'Orbitron', sans-serif;
    background: var(--cosmic-bg);
    color: #e6e6fa;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 20px;
    overflow-x: hidden;
}
 
.datetime {
    text-align: center;
    margin-bottom: 30px;
    font-size: 14px;
    color: var(--neon-cyan);
    text-shadow: var(--text-glow);
    letter-spacing: 1px;
}
 
.portal-container {
    width: 100%;
    max-width: 480px;
    padding: 40px;
    background: rgba(42, 10, 75, 0.3);
    border-radius: 20px;
    border: 1px solid var(--neon-purple);
    box-shadow: 0 0 30px rgba(138, 43, 226, 0.3), 
                inset 0 0 15px rgba(138, 43, 226, 0.2);
    position: relative;
}
 
.portal-container::after {
    content: '';
    position: absolute;
    top: -2px;
    left: -2px;
    right: -2px;
    bottom: -2px;
    border-radius: 22px;
    background: linear-gradient(45deg, #9932cc, var(--neon-purple), #ba55d3);
    background-size: 200% 200%;
    z-index: -1;
    animation: portalGlow 4s ease infinite;
    opacity: 0.7;
}
 
@keyframes portalGlow {
    0% { background-position: 0% 50%; filter: blur(8px); }
    50% { background-position: 100% 50%; filter: blur(5px); }
    100% { background-position: 0% 50%; filter: blur(8px); }
}
 
h1.portal-title {
    text-align: center;
    margin-bottom: 30px;
    font-size: 28px;
    font-weight: 500;
    background: linear-gradient(to right, #e6e6fa, var(--neon-cyan));
-webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: 0 0 10px rgba(230, 230, 250, 0.3);
}
 
.portal-options {
    display: grid;
    gap: 18px;
}
 
.portal-card {
    padding: 22px;
    background: var(--card-bg);
    border-radius: 12px;
    border: 1px solid rgba(138, 43, 226, 0.3);
    transition: all 0.4s cubic-bezier(0.22, 1, 0.36, 1);
    cursor: pointer;
    position: relative;
    overflow: hidden;
}
 
.portal-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 25px rgba(138, 43, 226, 0.3);
    border-color: var(--neon-purple);
}
 
.portal-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(138, 43, 226, 0.1), transparent);
    transition: 0.5s;
}
 
.portal-card:hover::before {
    left: 100%;
}
 
.card-header {
    display: flex;
    align-items: center;
    margin-bottom: 12px;
}
 
.card-icon {
    width: 28px;
    height: 28px;
    margin-right: 12px;
    filter: drop-shadow(0 0 4px var(--neon-purple));
}
 
.card-title {
    font-size: 18px;
    font-weight: 500;
    background: linear-gradient(to right, #e6e6fa, #9370db);
-webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
 
.card-desc {
    font-size: 14px;
    line-height: 1.5;
    color: #d8bfd8;
    padding-left: 40px;
}
 
@media (max-width: 600px) {
    .portal-container {
        padding: 30px 20px;
    }
    h1.portal-title {
        font-size: 24px;
    }
    .card-title {
        font-size: 16px;
    }
}
 
/* 修改后的遮罩层 */
.mask-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    backdrop-filter: blur(8px);
    background-color: rgba(26, 6, 53, 0.7);
    z-index: 999;
    display: flex;
    justify-content: center;
    align-items: center;
}
 
/* 优化后的弹窗样式 */
.auth-modal {
    width: 90%;
    max-width: 250px; /* 缩小宽度 */
    padding: 25px; /* 减小内边距 */
    background: linear-gradient(145deg, #2d0b4d, #1a0637);
    border-radius: 16px;
    border: 1px solid var(--neon-purple);
    box-shadow: 0 0 40px rgba(138, 43, 226, 0.5), 
                inset 0 0 20px rgba(138, 43, 226, 0.3);
    position: relative;
    overflow: hidden;
    z-index: 1000;
    animation: modalGlow 3s ease infinite;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
 
.auth-modal::before {
    content: '';
    position: absolute;
    top: -2px;
    left: -2px;
    right: -2px;
    bottom: -2px;
    border-radius: 18px;
    background: linear-gradient(45deg, #9932cc, var(--neon-purple), #ba55d3, #9932cc);
    background-size: 300% 300%;
    z-index: -1;
    opacity: 0.8;
    animation: portalGlow 6s ease infinite;
}
 
@keyframes modalGlow {
    0%, 100% { box-shadow: 0 0 40px rgba(138, 43, 226, 0.5), inset 0 0 20px rgba(138, 43, 226, 0.3); }
    50% { box-shadow: 0 0 60px rgba(157, 77, 255, 0.7), inset 0 0 25px rgba(138, 43, 226, 0.4); }
}
 
.modal-title {
    text-align: center;
    margin-bottom: 20px; /* 减小间距 */
    font-size: 22px;
    font-weight: 500;
    background: linear-gradient(to right, #e6e6fa, #d8bfd8);
-webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: 0 0 8px rgba(230, 230, 250, 0.5);
}
 
.modal-desc {
    text-align: center;
    margin-bottom: 20px;
    font-size: 14px;
    color: #d8bfd8;
    line-height: 1.6;
}
 
.auth-input {
    width: 100%;
    padding: 12px 15px;
    margin-bottom: 15px;
    background: rgba(50, 15, 80, 0.7);
    border: 1px solid var(--neon-purple);
    border-radius: 8px;
    color: #e6e6fa;
    font-family: inherit;
    font-size: 14px;
    outline: none;
    transition: all 0.3s ease;
}
 
.auth-input:focus {
    border-color: #ba55d3;
    box-shadow: 0 0 10px rgba(186, 85, 211, 0.5);
}
 
 /* 统一按钮样式 */
 .auth-btn, .qun-btn {
     width: 100%;
     padding: 12px;
     background: linear-gradient(to right, #8a2be2, #9932cc);
     border: none;
     border-radius: 10px;
     color: white;
     font-family: inherit;
     font-size: 15px;
     font-weight: 500;
     cursor: pointer;
     transition: all 0.3s ease;
     text-shadow: 0 0 5px rgba(255, 255, 255, 0.3);
     text-align: center;
     display: block;
     margin-bottom: 10px;
     box-sizing: border-box; /* 确保padding不影响宽度 */
 }
  
 .auth-btn:hover, .qun-btn:hover {
     background: linear-gradient(to right, #9932cc, #8a2be2);
     box-shadow: 0 0 15px rgba(138, 43, 226, 0.5);
     transform: translateY(-1px);
 }
  
 .qun-btn {
     margin-top: 0; /* 移除特殊的上边距 */
 }

 
.error-message {
    color: #ff6b6b;
    font-size: 13px;
    text-align: center;
    margin-top: 5px;
    height: 18px;
    text-shadow: 0 0 5px rgba(255, 107, 107, 0.3);
}

   </style>
</head>
<body>
  <script src="js/jq.js"></script> 
 </head> 
 <body id="v1"> 
  <div id="v2" class="mask-overlay"> 
   <div id="v3" class="auth-modal"> 
    <h2 id="v4" class="modal-title">✦ 卡密验证 ✦</h2> 
    <p id="v5" class="modal-desc">请前往群内@Q群管家获取卡密<br id="v6">输入卡密后即可进入资源库</p> 
    <input type="text" class="auth-input" id="authCode" placeholder="请输入卡密..." autocomplete="off"> 
    <div class="error-message" id="errorMsg"></div> 
    <button class="auth-btn" id="webtools-static-onfirmBtn">确认</button> 
  <a id="v7" href="https://qun.qq.com/universal-share/share?ac=1&amp;authKey=w3u8xvC9btaUH9sb6AE42gHAx9t7i4w972GA7o4ixD2xDHAJnBW/uBOMH%2BcaC8xP&amp;busi_data=eyJncm91cENvZGUiOiIxMDQxNTQ3NTc4IiwidG9rZW4iOiJBUnVqa3lvSUxpOVIzRGRVV256RkR4Vkp1Y2tYQVgzaEdUWW9pSlBIdTM3TDJzaElmZ1gydUZScXRpdHFIME5EIiwidWluIjoiMzIxMzgyNDEyNiJ9&amp;data=m8CPi366SuJUl3HgOElOCym7uUQG0l4hy9hYJRMADmPyYHXoeW8bKZwGC5RjJewmwQbVG7TmgVYXC9X1a_wXJQ&amp;svctype=4&amp;tempid=h5_group_info" class="qun-btn" target="_blank" style="text-decoration: none;">获取卡密</a>
   </div>
  </div> 
  <div id="v8" class="datetime">
        免费资源会持续更新，后续有新内容会第一时间补充上来～ 
  </div> 
 <div id="v9" class="portal-container"> 
    <h1 id="v10" class="portal-title">✦ 巳泷资源库入口 ✦</h1> 
    <div id="v11" class="portal-options"> 
     <div id="v12" class="portal-card" onclick="location.href='https://www.123912.com/s/QFshvd-5XNkv'"> 
      <div id="v13" class="card-header"> 
       <svg id="v14" class="card-icon" viewbox="0 0 24 24"> 
        <path id="v15" fill="currentColor" d="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"></path> 
       </svg> 
       <div id="v16" class="card-title">
         资源库软件包 
       </div> 
      </div> 
      <p id="v17" class="card-desc">安卓端软件包下载链接</p> 
     </div> 
     <div id="v18" class="portal-options"> 
      <div id="v19" class="portal-card" onclick="location.href='zyku.html'"> 
       <div id="v20" class="card-header"> 
        <svg id="v21" class="card-icon" viewbox="0 0 24 24"> 
         <path id="v22" fill="currentColor" d="M10,9L12,11L16,7L12,3L10,5L13.17,8H3V10H13.17L10,13V9M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z"></path> 
        </svg> 
        <div id="v23" class="card-title">
          通用入口 
        </div> 
       </div> 
       <p id="v24" class="card-desc">点击这里进入资源库主界面</p> 
      </div> 
     </div> 
     <div id="v31" class="portal-card" onclick="location.href='https://link3.cc/silong6969'"> 
      <div id="v32" class="card-header"> 
       <svg id="v33" class="card-icon" viewbox="0 0 24 24"> 
        <path id="v34" fill="currentColor" d="M22,16V4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H6V20H4V22H6A2,2 0 0,0 8,20H16A2,2 0 0,0 18,22H20V20H18V18H20A2,2 0 0,0 22,16M4,4H20V16H4V4M12,7L8,11H11V14H13V11H16L12,7Z"></path> 
       </svg> 
       <div id="v35" class="card-title">
         资源中转站 
       </div> 
      </div> 
      <p id="v36" class="card-desc">联系方式 ｜ 资源跳转 </p> 
     </div> 
    </div> 
 </div>
  <script>
 document.addEventListener('DOMContentLoaded', function() {
     // 星空背景效果 
     const canvas = document.createElement('canvas');
     canvas.style.position = 'fixed';
     canvas.style.top = '0';
     canvas.style.left = '0';
     canvas.style.zIndex = '-1';
     canvas.style.width = '100vw';
     canvas.style.height = '100vh';
     document.body.appendChild(canvas);
     
     const ctx = canvas.getContext('2d');
     canvas.width = window.innerWidth;
     canvas.height = window.innerHeight;
     
     const particles = [];
     const colors = ['rgba(157, 77, 255, 0.5)', 'rgba(0, 247, 255, 0.3)', 'rgba(226, 212, 255, 0.2)'];
     
     class Particle {
         constructor() {
             this.x = Math.random() * canvas.width;
             this.y = Math.random() * canvas.height;
             this.size = Math.random() * 3 + 1;
             this.speedX = Math.random() * 2 - 1;
             this.speedY = Math.random() * 2 - 1;
             this.color = colors[Math.floor(Math.random() * colors.length)];
         }
         
         update() {
             this.x += this.speedX;
             this.y += this.speedY;
             
             if (this.x > canvas.width || this.x < 0) this.speedX *= -1;
             if (this.y > canvas.height || this.y < 0) this.speedY *= -1;
         }
         
         draw() {
             ctx.fillStyle = this.color;
             ctx.beginPath();
             ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
             ctx.fill();
         }
     }
     
     function initParticles() {
         for (let i = 0; i < 50; i++) {
             particles.push(new Particle());
         }
     }
     
     function animateParticles() {
         ctx.clearRect(0, 0, canvas.width, canvas.height);
         
         for (let i = 0; i < particles.length; i++) {
             particles[i].update();
             particles[i].draw();
             
             for (let j = i; j < particles.length; j++) {
                 const dx = particles[i].x - particles[j].x;
                 const dy = particles[i].y - particles[j].y;
                 const distance = Math.sqrt(dx * dx + dy * dy);
                 
                 if (distance < 100) {
                     ctx.beginPath();
                     ctx.strokeStyle = `rgba(157, 77, 255, ${1 - distance/100})`;
                     ctx.lineWidth = 0.5;
                     ctx.moveTo(particles[i].x, particles[i].y);
                     ctx.lineTo(particles[j].x, particles[j].y);
                     ctx.stroke();
                 }
             }
         }
         
         requestAnimationFrame(animateParticles);
     }
     
     // 初始化星空背景 
     initParticles();
     animateParticles();
     
     window.addEventListener('resize', function() {
         canvas.width = window.innerWidth;
         canvas.height = window.innerHeight;
     });
  
     // 卡密验证功能 
     const authModal = document.querySelector('.mask-overlay');
     const authInput = document.getElementById('authCode');
     const confirmBtn = document.getElementById('webtools-static-onfirmBtn');
     const errorMsg = document.getElementById('errorMsg');
     
     // 有效卡密列表（请替换为实际有效的卡密）
     const validAuthCodes = ['Silong-Baoku-7401'];
     
     // 检查本地是否已保存验证状态 
     const savedAuthCode = localStorage.getItem('authCode');
     if(savedAuthCode) {
         authInput.value = savedAuthCode;
     }
     
     // 自动验证已保存的卡密 
     if(localStorage.getItem('authVerified') === 'true') {
         if(validAuthCodes.includes(savedAuthCode)) {
             authModal.style.display = 'none';
         } else {
             // 清除无效的验证状态 
             localStorage.removeItem('authVerified');
             localStorage.removeItem('authCode');
         }
     }
     
     // 验证函数 
     function validateAuthCode() {
         const inputCode = authInput.value.trim();
         
         if(!inputCode) {
             errorMsg.textContent = '请输入卡密！';
             return false;
         }
         
         // 验证卡密（不区分大小写）
         const normalizedInput = inputCode.toUpperCase();
         const isValid = validAuthCodes.some(code => code.toUpperCase() === normalizedInput);
         
         if(isValid) {
             errorMsg.textContent = '';
             localStorage.setItem('authVerified', 'true');
             localStorage.setItem('authCode', inputCode);
             authModal.style.display = 'none';
             return true;
         } else {
             errorMsg.textContent = '卡密错误，请重新输入或获取新卡密！';
             authInput.value = '';
             setTimeout(() => {
                 errorMsg.textContent = '';
             }, 2000);
             return false;
         }
     }
     
     // 按钮点击事件 
     confirmBtn.addEventListener('click', validateAuthCode);
     
     // 回车键支持 
     authInput.addEventListener('keyup', function(e) {
         if(e.key === 'Enter') {
             validateAuthCode();
         }
     });
 });
 </script>
 </body>
</html>
